#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h>
#include<stdio.h>
#include<stdlib.h>
#include<signal.h>

pid_t pid;

void sig_chld(int signo)
{
	printf("%u catch SIGCHLD\n",getpid());
	kill(pid, SIGCONT);
}

/*
 * 每次子进程状态发生变化，都会向父进程发送SIGCHLD信号
 * */

int main()
{
	signal(SIGCHLD, sig_chld);

	pid = fork();
	if (pid == 0)
	{
		int i;
		for (i = 0; i < 3; i++)
		{
			printf("%u stop\n",getpid());
			kill(getpid(), SIGSTOP);
		}
		exit(0);
	} 
	else 
	{
		while(1);
	}
	return 0;
}
